package com.itheima.freeMarker;

import com.itheima.pojo.Setmeal;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import java.io.FileWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author jun
 * @since 2023-12-27 星期三 09:38:35
 */

public class TestFreeMarker {

    private final static String ABSOLUTE_PATH = "/Users/jun/project/bxg-health-parent/bxg-health-mobile/src/main/resources/mobile/pages";
    private final static String FREEMARKER_PATH = "/templates/freeMarker";


    public static void main(String [] args) {
        try {
            List<Setmeal> setmeals = new ArrayList<>();

            // 第一步：创建一个Configuration对象，直接new一个对象。构造方法的参数就是FreeMarker对于的版本号。
            Configuration configuration = new Configuration(Configuration.getVersion());

            // 第二步：设置模板文件所在的路径。
            Resource templateResource = new ClassPathResource(FREEMARKER_PATH);
            configuration.setDirectoryForTemplateLoading(templateResource.getFile());

            // 第三步：设置模板文件使用的字符集。一般就是utf-8.
            configuration.setDefaultEncoding("utf-8");

            // 第四步：加载一个模板，创建一个模板对象。
            Template template = configuration.getTemplate("mobile_setmeal.ftl");

            // 第五步：创建一个模板使用的数据集，可以是pojo也可以是map。一般是Map。
            Map<String, Object> dataModel = new HashMap<>();
            //向数据集中添加数据

            dataModel.put("setmealList", setmeals);

            // 第六步：创建一个Writer对象，一般创建一FileWriter对象，指定生成的文件名。
            Writer out = new FileWriter(ABSOLUTE_PATH+"/setmeal.html");

            // 第七步：调用模板对象的process方法输出文件。
            template.process(dataModel, out);

            // 第八步：关闭流。
            out.close();

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}